#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>




//// 【僵尸进程】： 子进程已经运行完毕，但是在它的 task_struct 中记录自己的退出信息，等待父进程来读取
//int main()
//{
//  pid_t id = fork();
//  if(id==0)
//  {
//    //child
//    int cnt = 5;
//    while(cnt)
//    {
//      printf("I am child, cnt:%d, pid:%d\n", cnt, getpid());
//      sleep(1); 
//      cnt--;
//    }
//  }
//  else 
//  {
//    //parent
//    while(1)
//    {
//      printf("I am a parent, running always!, pid:%d\n", getpid());
//      sleep(1);
//    }
//  }
//  
//  return 0;
//}



//--------------------------------------------------------------



// 【孤儿进程】： 子进程的父进程先退出了，这个子进程就是孤儿进程
int main()
{
  int cnt = 5;
  pid_t id = fork();
  if(id==0)
  {
    //child
    while(1)
    {
      printf("I am child, cnt:%d, pid:%d\n", cnt, getpid());
      sleep(1); 
    }
  }
  else 
  {
    //parent
    while(cnt--)
    {
      printf("I am a parent, running always!, pid:%d\n", getpid());
      sleep(1);
    }
  }
  
  return 0;
}





